package user_api

import (
	"github.com/gin-gonic/gin"
	"giv-vue-blog/global"
	"giv-vue-blog/models"
	"giv-vue-blog/models/ctype"
	"giv-vue-blog/models/res"
	"giv-vue-blog/service/common"
	"giv-vue-blog/utils/desens"
	"giv-vue-blog/utils/jwts"
)

// UserListView 用户列表接口
// @Summary 获取用户列表
// @Description 获取用户列表，根据角色权限对用户名、手机号和邮箱进行脱敏处理
// @Tags 用户管理
// @Accept json
// @Produce json
// @Param page query models.PageInfo true "分页信息"
// @Router /api/user_list [get]
// @Success 200 {object} res.Response
// @Failure 400 {object} res.Response "请求参数错误"
// @Failure 500 {object} res.Response "服务器内部错误"
func (UserApi) UserListView(c *gin.Context) {
	_claims, _ := c.Get("claims")
	claims := _claims.(*jwts.CustomClaims)
	var page models.PageInfo
	if err := c.ShouldBindQuery(&page); err != nil {
		res.FailedWithCode(res.ArgumentError, c)
		return
	}
	var users []models.UserModel
	list, count, err := common.CommonList(models.UserModel{}, common.Option{
		PageInfo: page,
		Debug:    true,
	})
	for _, user := range list {
		if ctype.Role(claims.Role) == ctype.PermissionAdmin {
			//如果角色是管理员 用户名会显示为空，
			user.UserName = ""
		}
		//手机号与邮箱脱敏
		user.Tel = desens.DesensitizationTel(user.Tel)
		user.Email = desens.DesensitizationEmail(user.Email)
		users = append(users, user)
	}
	if err != nil {
		global.Log.Error(err)
		res.FailedWithMsg("查询失败", c)
		return
	}
	res.OkWithList(users, count, c)
}
